﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ABC_SA_WEB.WebServiceDestino;



namespace ABC_SA_WEB
{
    public partial class DestinosEdit : System.Web.UI.Page
    {
        private int id;
        wsDestinos servicio = new wsDestinos();
        public byte[] imagen;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                txtId.Enabled = false;
                id = Convert.ToInt32(Request.QueryString["value1"]);

                Destino destino = new Destino();

                txtId.Text = Request.QueryString["value1"];
                destino = servicio.destino(id);
                txtNombreEdit.Text = destino.NombreDestino;
                txtPaisEdit.Text = destino.Pais;
                txtProvinciaEdit.Text = destino.Provincia;
                txtCiudadEdit.Text = destino.Ciudad;
                txtDescripcionEdit.Text = destino.Descripcion;
                txtXEdit.Text = destino.Gpsx;
                txtYEdit.Text = destino.Gpsy;
                Session["IMAGEN"] = destino.Imagen;
                Image1Edit.Visible = true;



                //    string cadena="Handler.ashx?ID=" + objeto.EventoID;
                Image1Edit.ImageUrl = "~/Handler.ashx?ID=" + id;
            }
        }

        // cargar nueva imagen
        protected void btnCargarEdit_Click(object sender, EventArgs e)
        {
            if (this.FileUpload1Edit.HasFile && this.btnCargarEdit.Text == "Cargar")
            {
                string[] allowedExtension = { ".gif", ".jpg", ".png", ".jpeg" };
                string fileExtension = System.IO.Path.GetExtension(this.FileUpload1Edit.FileName);
                string ruta = FileUpload1Edit.FileName;
                // lblRutaEdit.Text = ruta;


                if (allowedExtension.Contains(fileExtension))
                {
                    if (this.btnCargarEdit.Text == "Cargar")
                    {

                        HttpPostedFile file = FileUpload1Edit.PostedFile;

                        //almacenar fichero en byte[]
                        int lengthFile = file.ContentLength;
                        byte[] fileArrayEdit = new byte[lengthFile];
                        file.InputStream.Read(fileArrayEdit, 0, lengthFile);


                        //grabar en Session
                        Session["IMAGEN"] = fileArrayEdit;


                        //mostrar imagen en control Image
                        ByteArrayToImageControlEdit(fileArrayEdit, fileExtension);

                       // Image1Edit.Visible = true;
                    }// fin del if
                } // fin de if
            }// fin if
         }// fin del metodo cargar  nueva imagen



        // metodo convertir de byte[] a un control image
        protected void ByteArrayToImageControlEdit(byte[] fileArray, string fileExtension)
        {
            string base64String = Convert.ToBase64String(fileArray, 0, fileArray.Length);
            this.Image1Edit.ImageUrl = "data:image/" + fileExtension + "png;base64," + base64String;

            this.Image1Edit.Visible = true;
        }// fin del metodo   ByteArrayToImageControlEdit

        protected void btnGuardar_Click(object sender, EventArgs e)
        {
            wsDestinos servicio = new wsDestinos();

            String nombre = txtNombreEdit.Text;
            String pais = txtPaisEdit.Text;
            String provincia = txtProvinciaEdit.Text;
            String ciudad = txtCiudadEdit.Text;
            String descripcion = txtDescripcionEdit.Text;
            String gpsx = txtXEdit.Text;
            String gpsy = txtYEdit.Text;
            //String ruta = Image1Edit.ImageUrl;
            //String extension = System.IO.Path.GetExtension(lblRutaEdit.Text);
            byte[] imagen;

            // guardar la session de imagen en el arreglo de bytes
            imagen = (byte[])Session["IMAGEN"];


            // validar espacios en blanco
            if (nombre != "" && pais != "" && provincia != "" && ciudad != "" && descripcion != "" )
            {
                if (imagen != null)
                {
                    if (gpsx != "" && gpsy != "")
                    {
                        bool modificado = servicio.modificarDestino(id, nombre, pais, provincia, ciudad, descripcion, gpsx, gpsy, imagen);
                        if (modificado)
                        {
                            string prompt = "<script type='text/javascript'>showNotification({message: 'Destino modificado correctamente',type: 'success',autoClose: true,duration: 3});</script>";
                            ClientScript.RegisterStartupScript(typeof(Page), "alert", prompt);
                        }
                        else 
                        {
                            string prompt = "<script type='text/javascript'>showNotification({message: ''No se pudo modificar el destino',type: 'error',autoClose: true,duration: 3});</script>";
                            ClientScript.RegisterStartupScript(typeof(Page), "alert", prompt);
                        }
                    }// fin del seleccionar direccion en mapa
                    else
                    {
                        string prompt = "<script type='text/javascript'>showNotification({message: ''Debe seleccionar una direccion en el mapa',type: 'error',autoClose: true,duration: 3});</script>";
                        ClientScript.RegisterStartupScript(typeof(Page), "alert", prompt);
                    }// fin del else seleccionar mapa
                }// fin del if imagen
                else
                {
                    string prompt = "<script type='text/javascript'>showNotification({message: ''Debe seleccionar y cargar una imagen',type: 'error',autoClose: true,duration: 3});</script>";
                    ClientScript.RegisterStartupScript(typeof(Page), "alert", prompt);
                }
            }// fin del if validacion campos de textos
            else
            {
                string prompt = "<script type='text/javascript'>showNotification({message: 'Debe llenar la informacion necesaria',type: 'error',autoClose: true,duration: 3});</script>";
                ClientScript.RegisterStartupScript(typeof(Page), "alert", prompt);
            }// fin de validacion textos
               


        }// fin del boton guardar

       // eliminar destino
        protected void btnEliminar_Click(object sender, EventArgs e)
        {
            wsDestinos servicio = new wsDestinos();
            //txtId.Enabled = true;
            servicio.eliminar(Convert.ToInt32(txtId.Text));
            Response.Redirect("ListarDestinos.aspx");

        }// fin del metodo eliminar destinos

        protected void btnVolver_Click(object sender, EventArgs e)
        {
           Response.Redirect("PaginaAdmin.aspx");

        }// fin del metodo eliminar destinos

    }
}